﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp1
{
    //第二题：
    //编写一个程序，用以接收用户输入的两个浮点型的数值，一个值表示用户想要存放在银行账户中的余额，
    //另一个值表示用户想要从银行账户中提取的金额。
    //实现存取款功能，
    //用户功能选择：1、存款，2、取款
    //取款时：
    //当用户想要提取的金额大于余额时，请手动抛出一个ArgumentOutOfRangeException 参数超出范围的异常，
    //异常信息可以写“取款金额大于余额，请重新输入”
    //，如此以确保取款金额始终不大于当前余额。
    //操作结束，打印输出余额是多少。
    //最后再添加catch一般异常 Exception，使得数据类型转换的异常也能被捕获到。

    class Program
    {

        static void Main(string[] args)
        {
            Yinghang ying = new Yinghang("辉", 50);
            List<Yinghang> list = new List<Yinghang>() { ying };
            try
            {
                while (true)
                {
                    Console.WriteLine("1、存款，2、取款");
                    int key = int.Parse(Console.ReadLine());
                    switch (key)
                    {
                        case 1:
                            Console.WriteLine("请输入你要存的金额");
                            ying.A = double.Parse(Console.ReadLine());
                            ying.Money += ying.A;
                            Console.WriteLine("您已经存入{0}元，余额有{1}元", ying.A, ying.Money);
                            break;
                        case 2:
                            Console.WriteLine("请输入你要取的金额");
                            ying.B = double.Parse(Console.ReadLine());
                            if (ying.B>ying.Money)
                            {
                                throw new AccessViolationException("余额不足，请重新输入");
                            }
                            else
                            {
                            ying.Money = ying.Money - ying.B;
                            Console.WriteLine("您已经取出{0}元，余额有{1}元", ying.B, ying.Money);
                            }
                            break;
                    }
                }
            }
            catch (ArgumentOutOfRangeException a)
            {
                Console.WriteLine(a.Message);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
            finally
            {
                Console.WriteLine();
            }

            Console.ReadKey();
        }
    }
}
